package com.hospital.hospitalserver.mapper;

import com.hospital.hospitalserver.entity.DepartmentInfo;
import com.hospital.hospitalserver.util.Pager;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 科室管理接口方法定义
 * */
@Mapper
public interface DepartmentMapper {
    /**
     * 添加科室
     * */
    public Integer addDepartment(DepartmentInfo department);

    /**
     * 编辑科室
     * */
    public Integer editDepartment(DepartmentInfo department);

    /**
     * 统计五种科室类型数量
     * @return 包含五种科室类型数量的Map
     */
    Map<String, Object> getDepartmentCategoryStats();

    /**
     * 科室管理分页功能
     * 根据检索条件查询科室数据条数
     * */
    public Integer getDepartmentCountsBySearch(Pager pager);

    /**
     * 根据检索条件查询科室数据
     * */
    public List<DepartmentInfo> getDepartmentMapperDataBySearch(Pager pager);

    /**
     * 查询科室列表数据
     * 提供给医生、护士等管理页面选择
     * */
    public List<DepartmentInfo> getDepartmentList();

    /**
     * 添加医生时更新对应科室医生人数
     * */
    public Integer UpdateAddDoctorCountByDepartmentId(@Param("department_id") Integer id);

    /**
     * 删除医生时更新对应科室医生人数
     * */
    public Integer UpdateDeleteDoctorCountByDepartmentId(@Param("department_id") Integer id);


    /**
     * 添加护士时更新对应科室医生人数
     * */
    public Integer UpdateAddNurseCountByDepartmentId(@Param("department_id") Integer id);

    /**
     * 删除护士时更新对应科室医生人数
     * */
    public Integer UpdateDeleteNurseCountByDepartmentId(@Param("department_id") Integer id);


    /**
     * 添加药剂师时更新对应科室医生人数
     * */
    public Integer UpdateAddPharmacistCountByDepartmentId(@Param("department_id") Integer id);

    /**
     * 删除药剂师时更新对应科室医生人数
     * */
    public Integer UpdateDeletePharmacistCountByDepartmentId(@Param("department_id") Integer id);

    /**
     * 添加财务人员时更新对应科室医生人数
     * */
    public Integer UpdateAddFinanceCountByDepartmentId(@Param("department_id") Integer id);

    /**
     * 删除财务人员时更新对应科室医生人数
     * */
    public Integer UpdateDeleteFinanceCountByDepartmentId(@Param("department_id") Integer id);
}
